const express = require('express');
const { authenticateToken, requirePermissions } = require('../middleware/auth');
const User = require('../models/User');

const router = express.Router();

// 所有用户路由都需要认证
router.use(authenticateToken);

/**
 * 获取用户列表
 * GET /api/users
 */
router.get('/', requirePermissions(['user:view']), async (req, res) => {
  try {
    const { page = 1, pageSize = 10, search = '' } = req.query;
    
    const result = await User.getList(
      parseInt(page),
      parseInt(pageSize),
      search
    );

    res.paginate(result.users, result.total, page, pageSize);

  } catch (error) {
    console.error('获取用户列表失败:', error);
    res.error('获取用户列表失败', 500, error.message);
  }
});

/**
 * 获取用户详情
 * GET /api/users/:id
 */
router.get('/:id', requirePermissions(['user:view']), async (req, res) => {
  try {
    const { id } = req.params;
    
    const user = await User.findById(id);
    if (!user) {
      return res.error('用户不存在', 404);
    }

    res.success(user);

  } catch (error) {
    console.error('获取用户详情失败:', error);
    res.error('获取用户详情失败', 500, error.message);
  }
});

/**
 * 获取用户统计数据
 * GET /api/users/stats
 */
router.get('/stats/overview', requirePermissions(['user:view']), async (req, res) => {
  try {
    const stats = await User.getStats();
    res.success(stats);

  } catch (error) {
    console.error('获取用户统计失败:', error);
    res.error('获取用户统计失败', 500, error.message);
  }
});

module.exports = router;
